type AppendToObject<T, U extends string, V> =  {
    [P in (keyof T) | U ] :P extends U?V:T[Exclude<P,U>]
} ;
// type test1 = {
//     key: 'cat'
//     value: 'green'
//   }
// type t = AppendToObject<test1, 'home', boolean>

//就感觉很离谱
